package Q16_04_Tic_Tac_Win;
import CtCILibrary.AssortedMethods;
public class QuestionF {
public static Piece hasWon(Piece[][] board) {
Piece winner = Piece.Empty;
/* Check rows. */
for (int i = 0; i < board.length; i++) {
winner = hasWon(board, i, 0, 0, 1);
if (winner != Piece.Empty) {
return winner;
}
}
/* Check columns. */
for (int i = 0; i < board[0].length; i++) {
winner = hasWon(board, 0, i, 1, 0);
if (winner != Piece.Empty) {
return winner;
}
}
/* Check top/left -> bottom/right diagonal. */
winner = hasWon(board, 0, 0, 1, 1);
if (winner != Piece.Empty) {
return winner;
}
/* Check top/right -> bottom/left diagonal. */
return hasWon(board, 0, board[0].length - 1, 1, -1);
}
public static Piece hasWon(Piece[][] board, int row, int col, int incrementRow, int incrementCol) {
Piece first = board[row][col];
while (row < board.length && col < board[row].length) {
if (board[row][col] != first) {
return Piece.Empty;
}
row += incrementRow;
col += incrementCol;
}
return first;
}
public static void main(String[] args) {
int N = 3;
int[][] board_t = AssortedMethods.randomMatrix(N, N, 0, 2);
Piece[][] board = new Piece[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
int x = board_t[i][j];
board[i][j] = Tester.convertIntToPiece(x);
}
}
Piece p1 = hasWon(board);
System.out.println(p1);
AssortedMethods.printMatrix(board_t);
}
}